1572. 矩阵对角线元素的和
1572. 矩阵对角线元素的和
Similar Question
Solution Tips
方案一: 遍历对角线
var diagonalSum = function(mat) {
// 从小的矩阵开始计算, n = 1 or n = 2, 之后只需要每次加上四个角落即可
const n = mat.length;
let sum = 0;
// 正方形矩阵, 一个变量即可
let i = 0;
// 计算主对角线
while (i < n) {
sum += mat[i][i];
i++;
}
// 计算副对角线, 初始时 i === n
i = n - 1;
while (i >= 0) {
sum += mat[n - 1 - i][i]
i--;
}
// 不论奇数还是偶数都直接计算对角线就行, 如果是奇数就减去一次中点
if (n % 2 === 1) {
const mid = Math.floor(n / 2);
sum -= mat[mid][mid]
}
return sum;
};
一次遍历
通过 i 和 n 的关系, 其实可以做到在一次遍历中计算完, 但是可能没有那么直观, 就这样吧